package com.lianqi.emcpframework.design.domain.event;

import java.util.Date;

/**
 * @program emcp-framework
 * @ClassName DomainEvent
 * @description: 领域事件定义
 * @author: sky
 * @create: 2019/06/06 10:06
 */
public interface DomainEvent {

    String id();

    /**
     * 事件的唯一标识
     * @return
     */
    default String getId(){
        return id();
    }

    /**
     * 事件执行
     * @return
     */
    Date occurredOn();

    /**
     * 获取事件发生时间
     * @return
     */
    default Date getCreateTime(){
        return occurredOn();
    }

    /**
     * 获取事件类型
     * @return
     */
    default String type(){
        return getClass().getSimpleName();
    }

    /**
     * 获取事件类型
     * @return
     */
    default String getType(){
        return type();
    }
}
